package guard.finder.utils;

import java.util.ArrayList;
import guard.finder.R;
import guard.finder.objetos.implicados;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class implicados_adapter extends ArrayAdapter<implicados>{
	    final Context context; 
	    int layoutResourceId;    
	    ArrayList<implicados> data = null;
	    
	    public implicados_adapter(Context context, int layoutResourceId, ArrayList<implicados> data) {
	        super(context, layoutResourceId, data);
	        this.layoutResourceId = layoutResourceId;
	        this.context = context;
	        this.data = data;
	        verificarVacio();
	    }
	    
	    /**
	     * Verificar si no hay datos para mostrar que la lista esta vacia.
	     */
	    public void verificarVacio(){
	    	if(data.isEmpty()){
	    		data.add(new implicados("No hay implicados","",0));
	    	}
	    }
	    	    
	    @Override
	    public View getView(int position, View convertView, ViewGroup parent) {
	        View row = convertView;
	        ImplicadosHolder holder = null;
	        
	        if(row == null)
	        {
	            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
	            row = inflater.inflate(layoutResourceId, parent, false);
	            holder = new ImplicadosHolder();
	            holder.txtName= (TextView)row.findViewById(R.id.textLine);
	            holder.txtEmail = (TextView)row.findViewById(R.id.textLine2);
	            holder.img = (Button)row.findViewById(R.id.btnEliminar);
	            row.setTag(holder);
	        }
	        else
	        {
	            holder = (ImplicadosHolder)row.getTag();
	        }	        
	        implicados imp = data.get(position);
	        holder.txtName.setText(imp.getNombre());
	        holder.txtEmail.setText(imp.getEmail());
	        holder.img.setBackgroundResource(imp.getImg());
	        
	        setearEvento(position,row);
	        return row;
	    }
	    
	    /**
	     * Agregar eventos de OnClick a cada uno de los elementos de la lista,
	     * esto para poder eliminarlos.
	     * @param position La posicion del item.
	     * @param row La Vista para obtener el id del boton.
	     */
	    private void setearEvento(final int position, View row){
	    	Button btnEliminar = (Button)row.findViewById(R.id.btnEliminar);
	    	btnEliminar.setOnClickListener(new OnClickListener() {
				@Override
				public void onClick(View v) {
					remove(position);					
					Toast.makeText(context, "Removido", Toast.LENGTH_SHORT).show();					
				}				
			});
	    }
	    
	    /**
	     * Eliminar un elemento de la lista
	     * y posteriormente refrescar la lista.
	     * @param position La posicion del elemento a eliminar.
	     */
	    public void remove(int position){
	    	data.remove(position);
	    	verificarVacio();
	    	notifyDataSetChanged();
	    }
	    
	    static class ImplicadosHolder
	    {
	    	Button img;
	        TextView txtName;
	        TextView txtEmail;
	    }
}
